apiVersion: v1
kind: Service
metadata:
  name: kube-dns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "KubeDNS"
spec:
  selector:
    k8s-app: kube-dns
  clusterIP: {{ skydns_ip }}
  ports:
  - name: dns
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
    protocol: TCP


---
apiVersion: v1
kind: ReplicationController
metadata:
    name: kube-dns-v16
    namespace: kube-system
    labels:
        k8s-app: kube-dns
        version: v16
        kubernetes.io/cluster-service: "true"
spec:
    replicas: 1
    selector:
        k8s-app: kube-dns
        version: v16
    template:
        metadata:
            labels:
                k8s-app: kube-dns
                version: v16
                kubernetes.io/cluster-service: "true"
        spec:
            containers:
            - name: kubedns
              image: index.tenxcloud.com/google_containers/kubedns-amd64:1.6
              resources:
               # TODO: Set memory limits when we've profiled the container for large
               # clusters, then set request = limit to keep this container in
               # guaranteed class. Currently, this container falls into the
               # "burstable" category so the kubelet doesn't backoff from restarting it.
                    limits:
                        cpu: 100m
                        memory: 170Mi
                    requests:
                        cpu: 100m
                        memory: 70Mi
              livenessProbe:
                httpGet:
                    path: /healthz
                    port: 8080
                    scheme: HTTP
                initialDelaySeconds: 60
                timeoutSeconds: 5
                successThreshold: 1
                failureThreshold: 5
              readinessProbe:
                  httpGet:
                    path: /readiness
                    port: 8081
                    scheme: HTTP
          # we poll on pod startup for the Kubernetes master service and
          # only setup the /readiness HTTP server once that's available.
                  initialDelaySeconds: 30
                  timeoutSeconds: 5
              args:
              # command = "/kube-dns"
              - --domain=cluster.local.
              - --dns-port=10053
              - --kube-master-url=http://{{ master_ip_port }}
              ports:
              - containerPort: 10053
                name: dns-local
                protocol: UDP
              - containerPort: 10053
                name: dns-tcp-local
                protocol: TCP
            - name: dnsmasq
              image: index.tenxcloud.com/google_containers/kube-dnsmasq-amd64:1.3
              args:
              - --cache-size=1000
              - --no-resolv
              - --server=127.0.0.1#10053
              ports:
              - containerPort: 53
                name: dns
                protocol: UDP
              - containerPort: 53
                name: dns-tcp
                protocol: TCP
            - name: healthz
              image: index.tenxcloud.com/google_containers/exechealthz-amd64:1.0
              resources:
              # keep request = limit to keep this container in guaranteed class
                limits:
                    cpu: 10m
                    memory: 50Mi
                requests:
                    cpu: 10m
                    memory: 50Mi
              args:
              - -cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null && nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053 >/dev/null
              - -port=8080
              - -quiet
              ports:
              - containerPort: 8080
                protocol: TCP
            dnsPolicy: Default  # Don't use cluster DNS.
